package baiqitun.stupro.subject.service;

import baiqitun.stupro.common.service.MyService;
import baiqitun.stupro.security.entity.SysUser;
import baiqitun.stupro.subject.entity.SysTutorInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;

import java.util.List;

/**
 * <p>
 * 导师信息表 服务类
 * </p>
 *
 * @author kedaji
 * @since 2020-04-01
 */
public interface SysTutorInfoService extends MyService<SysTutorInfo> {
    /**
     * 保存导师信息
     * 重写父类方法
     * @param tutorInfo 导师信息
     * @return 操作是否成功
     */
    @Override
    boolean save(SysTutorInfo tutorInfo);
    /**
     * 保存导师到指定系
     * @param user 用户信息
     * @param tutorInfo 导师信息
     * @param departId 系部门id
     */
    void saveTutorToRootDepart(SysUser user, SysTutorInfo tutorInfo, String departId);

    /**
     * 移动导师到另一个科目
     * @param userId 导师用户id
     * @param subjectId 科目id
     * @param updateBy 修改人用户名
     */
    void moveTutorToOtherSubject(String userId, String subjectId, String updateBy);

    /**
     * 处理【选择导师】的申请
     * @param taskId 任务id
     * @param result 处理结果
     */
    void handleTaskForSelectTutor(String taskId, String result);

    /**
     * 处理【取消选择当前导师】的申请
     * @param taskId 任务id
     * @param result 处理结果
     */
    void handleTaskForCancelSelectedTutor(String taskId, String result);

    /**
     * 获取在【选择导师】流程总等待导师处理的任务列表
     * @param tutorUserId 导师用户id
     * @return 任务列表
     */
    List<Task> listTaskForSelectTutorRequest(String tutorUserId);

    /**
     * 获取在【取消选择当前导师】流程中等待导师处理的任务列表
     * @param tutorUserId 导师用户id
     * @return 任务列表
     */
    List<Task> listTaskForCancelSelectedTutorRequest(String tutorUserId);

    /**
     * 根据用户id获取导师信息
     * @param userId 用户id
     * @return 导师新
     */
    SysTutorInfo getTutorInfoByUserId(String userId);
}
